ceddb50e60efcc6686d1e4d39a4328c8ae8c21af,OsmAnd/src/net/osmand/plus/views/Renderable.java,Altitude,drawSingleSegment,#number#Paint#Canvas#RotatedTileBox#,206

Before Change


                float bandWidth = paint.getStrokeWidth() * 3;
                paint.setStrokeWidth(bandWidth);

                float clipL = -bandWidth / 2;
                float clipB = -bandWidth / 2;
                float clipT = canvas.getHeight() + bandWidth / 2;
                float clipR = canvas.getWidth() + bandWidth / 2;

                WptPt pt = culled.get(0);
                float lastx = tileBox.getPixXFromLatLon(pt.lat, pt.lon);
                float lasty = tileBox.getPixYFromLatLon(pt.lat, pt.lon);

                int size = culled.size();
                for (int i = 1; i < size; i++) {
                    pt = culled.get(i);

                    float x = tileBox.getPixXFromLatLon(pt.lat, pt.lon);
                    float y = tileBox.getPixYFromLatLon(pt.lat, pt.lon);

                    if (Math.min(x, lastx) < clipR && Math.max(x, lastx) > clipL
                            && Math.min(y, lasty) < clipT && Math.max(y, lasty) > clipB) {
                        paint.setColor(pt.colourARGB);
                        canvas.drawLine(lastx, lasty, x, y, paint);
                    }
                    lastx = x;
                    lasty = y;

After Change


            return new AsynchronousResampler.ResampleAltitude(this, segmentSize);
        }

        @Override public void drawSingleSegment(double zoom, Paint p, Canvas canvas, RotatedTileBox tileBox) {

            if (culled.size() > 1) {
                updateLocalPaint(p);
                canvas.rotate(-tileBox.getRotate(), tileBox.getCenterPixelX(), tileBox.getCenterPixelY());

                float bandWidth = paint.getStrokeWidth() * 3;
                paint.setStrokeWidth(bandWidth);

                QuadRect tileBounds = tileBox.getLatLonBounds();

                WptPt lastPt = culled.get(0);
                float lastx = tileBox.getPixXFromLatLon(lastPt.lat, lastPt.lon);
                float lasty = tileBox.getPixYFromLatLon(lastPt.lat, lastPt.lon);
                boolean last = false;

                int size = culled.size();
                for (int i = 1; i < size; i++) {
                    WptPt pt = culled.get(i);

                    if (Math.min(pt.lon, lastPt.lon) < tileBounds.right && Math.max(pt.lon, lastPt.lon) > tileBounds.left
                            && Math.min(pt.lat, lastPt.lat) < tileBounds.top && Math.max(pt.lat, lastPt.lat) > tileBounds.bottom) {

                        if (!last) {
                            lastx = tileBox.getPixXFromLatLon(lastPt.lat, lastPt.lon);
                            lasty = tileBox.getPixYFromLatLon(lastPt.lat, lastPt.lon);
                            last = true;
                        }

                        float x = tileBox.getPixXFromLatLon(pt.lat, pt.lon);
                        float y = tileBox.getPixYFromLatLon(pt.lat, pt.lon);

                        paint.setColor(pt.colourARGB);
                        canvas.drawLine(lastx, lasty, x, y, paint);

                        lastx = x;
                        lasty = y;